﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Crosland.Automotriz.Core;

namespace Crosland.Automotriz.Data.Dao.Linq
{
    public class clsT_Cre_Cliente_GarantiaDAO
    {
        private readonly AutomotrizEntities ContextoDeObjs = new AutomotrizEntities();

        public List<T_CREDITO_CLIENTE_GARANTIA> Lista()
        {
            List<T_CREDITO_CLIENTE_GARANTIA> lista = new List<T_CREDITO_CLIENTE_GARANTIA>();
            var queryText = String.Format("SELECT f.ID_CRE_CLIENTE_GARANTIA, f.ID_CLIENTE, f.DES_CLIENTE, f.ID_TIPO_CREDITO," +
                                            "f.TIPO_CREDITO, f.DES_ORG_VTA, f.IMP_AUTORIZADO_SOLES," +
                                            "f.IMP_AUTORIZADO_DOLARES, f.NRO_MAX_UNID_2R, f.NRO_MAX_UNID_3R," +
                                            " f.NRO_DIAS_CREDITO, f.FEC_VENCIMIENTO, f.ID_BANCO, f.DES_BANCO " +
                                            "FROM dbo.FU_CRE_CLIENTE_GARANTIA() AS f");
            var q = ContextoDeObjs.ExecuteStoreQuery<Crosland.Automotriz.Core.T_CREDITO_CLIENTE_GARANTIA>(queryText);
            lista = q.ToList();
            return lista;
        }


        public List<T_CRE_CLIENTE_GARANTIA_ORG_VTA> ListaClienteGarantiaOrgVta(int intID_CRE_CLIENTE_GARANTIA)
        {
            List<T_CRE_CLIENTE_GARANTIA_ORG_VTA> lista = new List<T_CRE_CLIENTE_GARANTIA_ORG_VTA>();

            try
            {
                var q = from c in ContextoDeObjs.T_CRE_CLIENTE_GARANTIA_ORG_VTA
                        where c.ID_CRE_CLIENTE_GARANTIA == intID_CRE_CLIENTE_GARANTIA
                        select c;


                lista = q.ToList();
                return lista;
            }
            catch (Exception)
            {
                
                throw;
            }

        
        }

        public List<T_CREDITO_CLIENTE_GARANTIA> ListaPorID_CRE_CLIENTE_GARANTIA(int ID_CRE_CLIENTE_GARANTIA)
        {
            List<T_CREDITO_CLIENTE_GARANTIA> lista = new List<T_CREDITO_CLIENTE_GARANTIA>();
            var queryText = String.Format("SELECT f.ID_CRE_CLIENTE_GARANTIA, f.ID_CLIENTE, f.DES_CLIENTE, f.ID_TIPO_CREDITO," +
                                            "f.TIPO_CREDITO, f.DES_ORG_VTA, f.IMP_AUTORIZADO_SOLES," +
                                            "f.IMP_AUTORIZADO_DOLARES, f.NRO_MAX_UNID_2R, f.NRO_MAX_UNID_3R," +
                                            " f.NRO_DIAS_CREDITO, f.FEC_VENCIMIENTO, f.ID_BANCO, f.DES_BANCO " +
                                            "FROM dbo.FU_CRE_CLIENTE_GARANTIA() AS f where f.ID_CRE_CLIENTE_GARANTIA="+ID_CRE_CLIENTE_GARANTIA);
            var q = ContextoDeObjs.ExecuteStoreQuery<Crosland.Automotriz.Core.T_CREDITO_CLIENTE_GARANTIA>(queryText);
            lista = q.ToList();
            return lista;
        }
        
        public IEnumerable<Object> ListaTipoCredito()
        {

            IEnumerable<Object> lista = new List<Object>();
            var q = from c in ContextoDeObjs.T_MAE_TABLA_GENERAL_CAB
                    join d in ContextoDeObjs.T_MAE_TABLA_GENERAL_DET on c.ID_GENERAL_CAB equals d.ID_GENERAL_CAB
                    where c.NOM_TABLA == "T_CRE_GARANTIA_TIPO"
                    select new
                    {
                        d.ID_GENERAL_DET,
                        d.DES_CORTA

                    };

            return lista = q.ToList();

        }

        public IEnumerable<Object> ListarCreditoBanco()
        {

            IEnumerable<Object> lista = new List<Object>();
            var q = from c in ContextoDeObjs.T_MAE_TABLA_GENERAL_CAB
                    join d in ContextoDeObjs.T_MAE_TABLA_GENERAL_DET on c.ID_GENERAL_CAB equals d.ID_GENERAL_CAB
                    where c.NOM_TABLA == "T_CRE_BANCO"
                    select new
                    {
                        d.ID_GENERAL_DET,
                        d.DES_CORTA

                    };

            return lista = q.ToList();

        }

        public bool Insertar_T_CRE_CLIENTE_GARANTIA(T_CRE_CLIENTE_GARANTIA Obj)
        {
         
            try
            {
         
                ContextoDeObjs.AddObject("T_CRE_CLIENTE_GARANTIA", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return true;
        }

        public bool Insertar_T_CRE_CLIENTE_GARANTIA_TIPO(T_CRE_CLIENTE_GARANTIA_TIPO Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("T_CRE_CLIENTE_GARANTIA_TIPO", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return true;
        }

        public bool Insertar_T_CRE_CLIENTE_GARANTIA_ORG_VTA(T_CRE_CLIENTE_GARANTIA_ORG_VTA Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("T_CRE_CLIENTE_GARANTIA_ORG_VTA", Obj);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return true;
        }


        public int UltimoNumeroT_CRE_CLIENTE_GARANTIA()
        {
            int max = 0;
            try
            {
                max = ContextoDeObjs.T_CRE_CLIENTE_GARANTIA.Select(x => x.ID_CRE_CLIENTE_GARANTIA).Max();
            }
            catch (Exception)
            {
                return max;
            }

            return max;

        }

        public int UltimoNumeroT_CRE_CLIENTE_GARANTIA_TIPO()
        {
            int max = 0;
            try
            {
                max = ContextoDeObjs.T_CRE_CLIENTE_GARANTIA_TIPO.Select(x => x.ID_CRE_CLIENTE_GARANTIA_TIPO).Max();
            }
            catch (Exception)
            {
                return max;
            }

            return max;

        }

        public int UltimoNumeroT_CRE_CLIENTE_GARANTIA_ORG_VTA()
        {
            int max = 0;
            try
            {
                max = ContextoDeObjs.T_CRE_CLIENTE_GARANTIA_ORG_VTA.Select(x => x.ID_CRE_CLIENTE_GARANTIA_ORG_VTA).Max();
            }
            catch (Exception)
            {
                return max;
            }

            return max;

        }
        
        public bool Modificar_T_CRE_CLIENTE_GARANTIA_TIPO(T_CRE_CLIENTE_GARANTIA_TIPO obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_CRE_CLIENTE_GARANTIA_TIPO", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;

            }
            return true;
        }

        public bool Modificar_T_CRE_CLIENTE_GARANTIA_ORG_VTA(T_CRE_CLIENTE_GARANTIA_ORG_VTA obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("T_CRE_CLIENTE_GARANTIA_ORG_VTA", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
            }
            catch (Exception)
            {
                return false;

            }
            return true;
        }
        
        public bool Elimiar_T_CRE_CLIENTE_GARANTIA_ORG_VTA(int ID_CRE_CLIENTE_GARANTIA)
        {

            try
            {
                ContextoDeObjs.CommandTimeout = 600;
                ContextoDeObjs.ExecuteStoreCommand("DELETE FROM T_CRE_CLIENTE_GARANTIA_ORG_VTA WHERE ID_CRE_CLIENTE_GARANTIA={0}",ID_CRE_CLIENTE_GARANTIA);
            }
            catch (Exception)
            {
                
                throw;
            }
            return true;
           
            
        }
        
        public bool Elimiar_T_CRE_CLIENTE_GARANTIA_TIPO(int ID_CRE_CLIENTE_GARANTIA)
        {
            try
            {
                ContextoDeObjs.ExecuteStoreCommand("DELETE FROM T_CRE_CLIENTE_GARANTIA_TIPO WHERE ID_CRE_CLIENTE_GARANTIA={0}",ID_CRE_CLIENTE_GARANTIA);

            }
            catch (Exception)
            {
                
                throw;
            }

            return true;
        
        }

    }
}
